F7: Enkel linjär regression
Korrelationskoefficienten mäter styrkan på det linjära sambandet, men ger oss inte mycket mer information än så
Antag att vi är intresserade av bränsleförbrukningen hos en bil som inte finns med i vårt dataset, men som vi vet väger väger 2 ton
Även om korrelationen pekar på att vikt och förbrukting är linjärt relaterade, säger den inget om hur vi kan använda vikt för att förutspå förbrukning
För att göra denna typ av prediktion kan använda linjär regression, som är vårt huvudfokus idag
Ren matematiskt skriver vi regressionslinjen som \[ \hat{y} = b_0 + b_1 x \]
Här betecknar \(b_0\) är interceptet och \(b_1\) är lutningen
Jämför med vad ni vet om den räta linjens ekvation!
Om vi har värden för \(b_0\), \(b_1\) och \(x\) kan vi skatta \(y\) – hatten över \(y\) säger att \(\hat y\) är en skattning av \(y\)
Vid behov kan vi använda beskrivande variabelnamn istället för \(x\) och \(y\), t.ex.
\[\widehat{\text{litermil}} = b_0 + b_1 \text{vikt}\]
Ett vanligt syfte med en regressionsmodell är att skatta värdet på responsvariabeln m.h.a den förklarande variabeln, som vi precis har gjort
Ett annat syfte kan vara att ge mer konkreta utsagor om sambandet
Vår modell skattar bensinförbrukning hos en bil, med hjälp av dess vikt
Vi kan skriva ut modellen som \(\widehat{\text{litermil}} = b_0 + b_1 \cdot \text{vikt}\)
\[\widehat{\text{litermil}} = 0.146 + 0.78 \cdot \text{vikt}\]
Vi har alltså \[ \widehat{\text{litermil}} = 0.146 + 0.78 \cdot \text{vikt} \]
\(b_1=0.78\) betyder att en bil, enligt modellen, förbrukar ytterligare 0.78 liter/mil bensin för varje extra ton som bilen väger
OBS!
Bilden visar en linjär regressionsmodell, där varje observation är en student
\(x\)-axeln visar antalet avslutade terminer och \(y\)-axeln antalet tagna poäng
Fundera lite snabbt på frågorna
Frågor
Minsta kvadratmetoden ger som sagt \[ b_1 = r_{x,y} \cdot \cfrac{s_y}{s_x}, \; \text{ och } \; b_0 = \bar{y} - b_1 \bar{x} \]
Vi ser så att vi kan beräkna \(b_0\) och \(b_1\) med hjälp av
Alla dessa känner vi igen sedan tidigare
litermil och vikt för vikttonlm()r <- cor(mtcars$litermil, mtcars$viktton) # Korrelation
sx <- sd(mtcars$viktton) # Standardavvikelse x
sy <- sd(mtcars$litermil) # Standardavvikelse y
xbar <- mean(mtcars$viktton) # Medelvärde x
ybar <- mean(mtcars$litermil) # Medelvärde y
sprintf("r=%.2f, sx=%.2f, sy=%.2f, xbar=%.2f, ybar=%.2f",
r, sx, sy, xbar, ybar)cor() och sd()lm()"Estimate", och vi har att
viktton)Pr(>|t|), och innehåller p-värden, som har med statistiskt signifikans att göramtcars bara innehåller data om 32 bilmodeller“A scatterplot of the residuals vs. the x-values should be the most boring scatterplot you’ve ever seen. It shouldn’t have any interesting fatures, like direction or shape.”
DeVeaux et al (2021), page 238
Så här kan vi skapa en residualgraf med R.
lmod2 <- lm(mpg ~ wt, data=mtcars) #Skapa en modell
mtcars$res <- resid(lmod2) # Skapa en vektor med residualerna
mtcars$y_hatt <- fitted(lmod2) # Estimerade y-värden
plot(mtcars$res ~ mtcars$y_hatt, ylab="Resid", xlab="y-hatt",
main="Residplot")
abline(h=0) #Dra en linje genom residualgrafen vid 0Så här kan vi skapa en normalfördelningsgraf med R.
qqnorm(resid(lmod2), main="Normalfördelningsgraf") #Rita graf
qqline(resid(lmod2)) #Lägg till en linje i grafen\[ \text{SST}=\sum_{i=1}^n (y_i - \bar{y})^2, \; \text{ och } \; \text{SSE} = \sum_{i=1}^n(y_i - \hat{y})^2 \]
När vi har räknat ut \(\text{SST}\) och \(\text{SSE}\) kan vi räkna ut \(R^2\) som
\[ R^2 = 1 - \cfrac{SSE}{SST} \]
Nedan ser vi två figurer ur Walpole et al. (2016)
\[ \text{SSR} = \sum_{i=1}^n (\hat{y} - \bar{y})^2 \]
SST, SSR och SSE förhåller sig till varandra på så sätt att \[ SST = SSR + SSE \]
Vi kan därför även beräkna \(R^2\) som \[ R^2 = \cfrac{SSR}{SST} \]
Att dela upp variansen på det här sättet kallas Analysis of variance (ANOVA)
Vi ser att lm räknar ut samma värde för R-squared.
Dessa slides skapades av Karl Sigfrid för kursen Statistik och Dataanalys I och har uppdaterats av Oskar Gustafsson och Valentin Zulj